package ComandosFuncionalidadEstado3;

import java.io.IOException;

import java.util.List;

import util.SocketManager;

import BaseDeDatos.ConsultasCelda;
import BaseDeDatos.ConsultasGPS;
import BaseDeDatos.ConsultasMedicion;
import ClasesBasicas.Celda;
import ClasesBasicas.Medicion;
import ProcesarComandos.Procesable;
import Servidor.Peticion;

public class ComandoGet_Loc implements Procesable {

	private String comando = "";
	private String respuesta = "";

	@Override
	public void Procesar(String Comando, SocketManager socketManager,
			Peticion peticion) {

		if (ConsultasGPS.getGPS().getEstado().equals("OFF")) {
			SocketManager managerLoc = null;

			try {
				managerLoc = new SocketManager("127.0.0.1", 4444);
				System.out.println("Conectado a localizacion");
			} catch (IOException e) {

				e.printStackTrace();
			}
			try {
				managerLoc.Escribir("USER Jaimito" + '\n');
			} catch (IOException e) {

				e.printStackTrace();
			}
			String respuest = "";
			try {
				respuest = managerLoc.Leer();
			} catch (IOException e) {

				e.printStackTrace();
			}
			if (respuest.contains("311")) {
				try {
					managerLoc.Escribir("PASS 12345" + '\n');
				} catch (IOException e) {

					e.printStackTrace();
				}
				try {
					respuest = managerLoc.Leer();
				} catch (IOException e) {

					e.printStackTrace();
				}

				if (respuest.contains("312")) {
					List<Celda> celdas = ConsultasCelda.getCeldas();
					int alea = util.GenerarAleatorios.generar(0, celdas.size());

					try {
						managerLoc.Escribir("GETCOOR "
								+ celdas.get(alea).getId_celda() + '\n');
					} catch (IOException e) {
						e.printStackTrace();
					}
					try {
						respuest = managerLoc.Leer();
					} catch (IOException e) {
						e.printStackTrace();
					}
					try {
						socketManager.Escribir(respuest + '\n');
					} catch (IOException e) {
						e.printStackTrace();
					}
					try {
						managerLoc.Escribir("SALIR"+'\n');
						managerLoc.CerrarStreams();
						managerLoc.CerrarSocket();
					} catch (IOException e) {
						
						e.printStackTrace();
					}
					
				}
			}

		}

		if (ConsultasGPS.getGPS().getEstado().equals("ON")) {
			Medicion medicion = ConsultasMedicion.generarMedicion(ConsultasGPS
					.getGPS());
			ConsultasMedicion.insertarMedicion(medicion, ConsultasGPS.getGPS());
			try {
				socketManager.Escribir("124 OK " + medicion.getLatitud() + "-"
						+ medicion.getLongitud() + CRLF);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		peticion.setEstado(peticion.getEstado() - 1);
	}
}
